12
11月
2022
摘要:/**
* 快速排序算法
* @param $data
* @return array
*/
function quickSort(&$data) {
$max = count($data) - 1;
if ($max < 1) {
return;
}
$head = 0;
$tail = $max;
$index = $max;
$pivot = $data[0];
while ($head < $tail) {
if ($data[$index] > $pivot) {
$data[$tail] = $data[$index];
$tail--;
$index = $tail;
} else {
$data[$head] = $data[$index];
$head++;
$index = $head;
}
}
/**
* 快速排序算法
* @param $data
* @return array
*/
function quickSort(&$data) {
$max = count($data) - 1;
if ($max < 1) {
return;
}
$head = 0;
$tail = $max;
$index = $max;
$pivot = $data[0];
while ($head < $tail) {
if ($data[$index] > $pivot) {
$data[$tail] = $data[$index];
$tail--;
$index = $tail;
} else {
$data[$head] = $data[$index];
$head++;
$index = $head;
}
}
$data[$index] = $pivot;
$left = [];
for ($i = 0; $i < $index; $i++) {
$left[] = &$data[$i];
}
$right = [];
for ($i = $index + 1; $i <= $max; $i++) {
$right[] = &$data[$i];
}
quickSort($left);
quickSort($right);
}
$data = [];
for ($i = 0; $i < 100; $i++) {
$data[] = mt_rand(0, 1000);
}
quickSort($data);
foreach ($data as $item) {
printf("%s\t", $item);
}
echo "<br>\n";
